package com.deschen.security.core.social.weixin.connect;

import com.deschen.security.core.social.qq.api.QQUserInfo;
import com.deschen.security.core.social.weixin.api.Weixin;
import com.deschen.security.core.social.weixin.api.WeixinUserInfo;
import org.springframework.social.connect.ApiAdapter;
import org.springframework.social.connect.ConnectionValues;
import org.springframework.social.connect.UserProfile;

/**
 * @Author deschen
 * @Create 2019/9/10
 * @Description spring social中Api(WeixinImpl的父类，微信获取用户信息)与connect（OAuth2Connect OAuth2用户标准信息）适配器
 * @Since 1.0.0
 */
public class WeixinAdapter implements ApiAdapter<Weixin> {

    private String openId;

    public WeixinAdapter() {
    }

    public WeixinAdapter(String openId) {
        this.openId = openId;
    }

    /**
     * 测试微信服务器是否有效,可以调用Api
     * @param api
     * @return
     */
    @Override
    public boolean test(Weixin api) {
        return true;
    }

    /**
     * 把api赋值到values
     * @param api
     * @param values
     */
    @Override
    public void setConnectionValues(Weixin api, ConnectionValues values) {
        WeixinUserInfo weixinUserInfo = api.getWeixinUserInfo(openId);
        // 昵称
        values.setDisplayName(weixinUserInfo.getNickname());
        // 图片
        values.setImageUrl(weixinUserInfo.getHeadimgurl());
        // 个人博客链接, QQ没有
        values.setProfileUrl(null);
        // OpenID是此网站上或应用中唯一对应用户身份的标识
        values.setProviderUserId(weixinUserInfo.getOpenid());
    }

    /**
     * 用api获取标准用户信息
     *
     * @param api
     * @return
     */
    @Override
    public UserProfile fetchUserProfile(Weixin api) {
        return null;
    }

    /**
     * 更新个人主页（QQ无，例如微博）
     *
     * @param api
     * @param message
     */
    @Override
    public void updateStatus(Weixin api, String message) {

    }
}
